#include "Server.hpp"
#include "logger.hpp"

Server::Server(EventLoop& loop, const std::string& ip, int port)
    : eventLoop_(loop), ip_(ip), port_(port) {
}

Server::~Server() {
}

void Server::setConnectionCallback(const std::function<void(const TcpConnectionPtr&)>& callback) {
    connectionCallback_ = callback;
}

void Server::onConnection(const TcpConnectionPtr& conn) {
    if (protocolHandler_) {
        // 调用协议处理器的 onConnection 方法
        protocolHandler_->onConnection(conn);
    }
    if (connectionCallback_) {
        connectionCallback_(conn);
    }
}

void Server::handleMessage(const TcpConnectionPtr& conn, const std::string& message) {
    if (protocolHandler_) {
        // 调用协议处理器的 handleMessage 方法
        protocolHandler_->handleMessage(message);
    } else {
        Logger::warn("No protocol handler set for incoming message");
    }
}

void Server::setProtocolHandler(std::unique_ptr<ProtocolHandler> handler) {
    protocolHandler_ = std::move(handler);
}
